package com.lyf.viewapp.chart;

import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;

import com.lyf.viewapp.R;
import com.lyf.viewapp.util.LogUtils;

import java.util.ArrayList;
import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;
import lecho.lib.hellocharts.listener.PieChartOnValueSelectListener;
import lecho.lib.hellocharts.model.PieChartData;
import lecho.lib.hellocharts.model.SliceValue;
import lecho.lib.hellocharts.view.PieChartView;

/**
 * 饼图
 * @author lyf
 */
public class PieChartActivity extends AppCompatActivity {

    @BindView(R.id.pieChart_view)
    PieChartView pieChartView;

    private PieChartData pieChartdata;
    private List<SliceValue> values = new ArrayList<>();
    /**
     * 颜色list
     */
    private List<Integer> colorData = new ArrayList<>();
    /**
     * 标签信息
     */
    private List<String> titleData = new ArrayList<>();
    private List<Integer> counts = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_pie_chart);
        ButterKnife.bind(this);

        setPieChartData(1, 2, 3, 4, "PieChart", true);
    }


    /**
     * 获取数据
     */
    private void setPieChartData(int num1, int num2, int num3, int num4, String centerText1, boolean isShowCount) {

        //4种颜色
        // colorData.add(R.drawable.shape_gradient);
        // colorData.add(R.drawable.shape_gradient1);
        // colorData.add(R.drawable.shape_gradient2);
        // colorData.add(R.drawable.shape_gradient3);
        colorData.add(Color.parseColor("#3089E4"));
        colorData.add(Color.parseColor("#B48FF9"));
        colorData.add(Color.parseColor("#FAE136"));
        colorData.add(Color.parseColor("#F38071"));
        //4种状态标签
        titleData.add("上班");
        titleData.add("上班越界");
        titleData.add("上班离线");
        titleData.add("下班");

        counts.add(num1);
        counts.add(num2);
        counts.add(num3);
        counts.add(num4);

        //4种模块，数据100随机数
        for (int i = 0; i < colorData.size(); i++) {
            //注意数据list大一定要对应颜色值大小否者越界
            SliceValue sliceValue = new SliceValue(counts.get(i), colorData.get(i));
            sliceValue.setLabel(titleData.get(i) + "\n" + counts.get(i) + "人");
            values.add(sliceValue);
            LogUtils.showDebug(sliceValue.toString());
        }

        pieChartdata = new PieChartData();
        //显示标签信息
        pieChartdata.setHasLabels(isShowCount);
        //true：只有点击对应的模块才显示标签信息  false：全部展示出来
        pieChartdata.setHasLabelsOnlyForSelected(false);
        //true：占的百分比否显示在饼图外面 false：显示在模块的中间
        pieChartdata.setHasLabelsOutside(true);
        //true：环形显示 false：圆形显示
        pieChartdata.setHasCenterCircle(false);
        //设置每个模板之间的间隙
        pieChartdata.setSlicesSpacing(0);
        //只有设置样式为圆环才能有效设置文字 （在assets目录下新建fonts目录，把ttf字体文件放到这）
        //Typeface tf = Typeface.createFromAsset(getAssets(), "你的字体资源文件路径");
        //pieChartdata.setCenterText1Typeface(tf);
        //填充数据 注意不能放在最后 否则就只显示条
        pieChartdata.setValues(values);
        pieChartdata.setCenterText1(centerText1);
        pieChartdata.setCenterText1FontSize(18);
        pieChartdata.setCenterText1Color(Color.WHITE);

        //设置中间环形的颜色 只有setHasCenterCircle(true)为环形时配合使用
        pieChartdata.setCenterCircleColor(ContextCompat.getColor(this, R.color.colorPrimary));
        //设置环形的大小级别 也是配合setHasCenterCircle(true)使用
        pieChartdata.setCenterCircleScale(0.4f);

        //将参数设置到控件上
        pieChartView.setPieChartData(pieChartdata);
        //true：点击选中模块变大  false：只有手指按住模板时才变大，手指离开恢复原状
        pieChartView.setValueSelectionEnabled(false);
        //设置透明度
        pieChartView.setAlpha(0.9f);
        //设置饼图大小 值越大图越大 1是与父控件相等（如果设置便签信息在饼图外面建议设置0.9f 否则会出现展示不全）
        pieChartView.setCircleFillRatio(0.7f);
        //点击事件 (只有设置样式为圆环才能有效)
        pieChartView.setOnValueTouchListener(selectListener);
    }


    /**
     * 监听事件
     */
    private PieChartOnValueSelectListener selectListener = new PieChartOnValueSelectListener() {

        @Override
        public void onValueDeselected() {
        }

        @Override
        public void onValueSelected(int arg0, SliceValue value) {
            //设置上面文字显示内容
            pieChartdata.setCenterText1(titleData.get(arg0) + "\n" + counts.get(arg0) + "人");
            //设置颜色
            pieChartdata.setCenterText1Color(colorData.get(arg0));
            //字体大小（无用）
            pieChartdata.setCenterText1FontSize(18);
        }
    };

}
